package br.com.dp.dao.entidade;

import java.io.Serializable;
import javax.persistence.*;
import java.util.List;


/**
 * The persistent class for the hotel database table.
 * 
 */
@Entity
@Table(name="hotel")
@NamedQuery(name="Hotel.findAll", query="SELECT h FROM Hotel h")
public class Hotel implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@Column(unique=true, nullable=false)
	private int id;

	@Column(length=14)
	private String cnpj;

	@Column(length=11)
	private String cpf;

	@Column(nullable=false, length=60)
	private String email;

	private byte isRede;

	@Column(nullable=false, length=60)
	private String nomeHotel;

	@Column(length=45)
	private String nomeRede;

	@Column(nullable=false, length=80)
	private String nomeResponsavel;

	private int numeroEstrelas;

	private int numeroQuartos;

	private int tipoAcomodacao;

	//bi-directional one-to-one association to Acordo
	@OneToOne(mappedBy="hotel")
	private Acordo acordo;

	//bi-directional many-to-many association to Conhecimento
	@ManyToMany(mappedBy="hotels1")
	private List<Conhecimento> conhecimentos1;

	//bi-directional many-to-one association to Contato
	@OneToMany(mappedBy="hotel")
	private List<Contato> contatos;

	//bi-directional many-to-many association to Conhecimento
	@ManyToMany
	@JoinTable(
		name="asc_hotel_conhecimento"
		, joinColumns={
			@JoinColumn(name="idHotel", nullable=false)
			}
		, inverseJoinColumns={
			@JoinColumn(name="idConhecimento", nullable=false)
			}
		)
	private List<Conhecimento> conhecimentos2;

	//bi-directional many-to-one association to Endereco
	@ManyToOne
	@JoinColumn(name="idEndereco")
	private Endereco endereco;

	//bi-directional many-to-one association to StatusHotel
	@ManyToOne
	@JoinColumn(name="idStatusHotel", nullable=false)
	private StatusHotel statusHotel;

	//bi-directional one-to-one association to Propriedade
	@OneToOne(mappedBy="hotel")
	private Propriedade propriedade;

	//bi-directional many-to-one association to Proprietario
	@OneToMany(mappedBy="hotel")
	private List<Proprietario> proprietarios;

	//bi-directional many-to-one association to Quarto
	@OneToMany(mappedBy="hotel")
	private List<Quarto> quartos;

	public Hotel() {
	}

	public int getId() {
		return this.id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getCnpj() {
		return this.cnpj;
	}

	public void setCnpj(String cnpj) {
		this.cnpj = cnpj;
	}

	public String getCpf() {
		return this.cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public byte getIsRede() {
		return this.isRede;
	}

	public void setIsRede(byte isRede) {
		this.isRede = isRede;
	}

	public String getNomeHotel() {
		return this.nomeHotel;
	}

	public void setNomeHotel(String nomeHotel) {
		this.nomeHotel = nomeHotel;
	}

	public String getNomeRede() {
		return this.nomeRede;
	}

	public void setNomeRede(String nomeRede) {
		this.nomeRede = nomeRede;
	}

	public String getNomeResponsavel() {
		return this.nomeResponsavel;
	}

	public void setNomeResponsavel(String nomeResponsavel) {
		this.nomeResponsavel = nomeResponsavel;
	}

	public int getNumeroEstrelas() {
		return this.numeroEstrelas;
	}

	public void setNumeroEstrelas(int numeroEstrelas) {
		this.numeroEstrelas = numeroEstrelas;
	}

	public int getNumeroQuartos() {
		return this.numeroQuartos;
	}

	public void setNumeroQuartos(int numeroQuartos) {
		this.numeroQuartos = numeroQuartos;
	}

	public int getTipoAcomodacao() {
		return this.tipoAcomodacao;
	}

	public void setTipoAcomodacao(int tipoAcomodacao) {
		this.tipoAcomodacao = tipoAcomodacao;
	}

	public Acordo getAcordo() {
		return this.acordo;
	}

	public void setAcordo(Acordo acordo) {
		this.acordo = acordo;
	}

	public List<Conhecimento> getConhecimentos1() {
		return this.conhecimentos1;
	}

	public void setConhecimentos1(List<Conhecimento> conhecimentos1) {
		this.conhecimentos1 = conhecimentos1;
	}

	public List<Contato> getContatos() {
		return this.contatos;
	}

	public void setContatos(List<Contato> contatos) {
		this.contatos = contatos;
	}

	public Contato addContato(Contato contato) {
		getContatos().add(contato);
		contato.setHotel(this);

		return contato;
	}

	public Contato removeContato(Contato contato) {
		getContatos().remove(contato);
		contato.setHotel(null);

		return contato;
	}

	public List<Conhecimento> getConhecimentos2() {
		return this.conhecimentos2;
	}

	public void setConhecimentos2(List<Conhecimento> conhecimentos2) {
		this.conhecimentos2 = conhecimentos2;
	}

	public Endereco getEndereco() {
		return this.endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

	public StatusHotel getStatusHotel() {
		return this.statusHotel;
	}

	public void setStatusHotel(StatusHotel statusHotel) {
		this.statusHotel = statusHotel;
	}

	public Propriedade getPropriedade() {
		return this.propriedade;
	}

	public void setPropriedade(Propriedade propriedade) {
		this.propriedade = propriedade;
	}

	public List<Proprietario> getProprietarios() {
		return this.proprietarios;
	}

	public void setProprietarios(List<Proprietario> proprietarios) {
		this.proprietarios = proprietarios;
	}

	public Proprietario addProprietario(Proprietario proprietario) {
		getProprietarios().add(proprietario);
		proprietario.setHotel(this);

		return proprietario;
	}

	public Proprietario removeProprietario(Proprietario proprietario) {
		getProprietarios().remove(proprietario);
		proprietario.setHotel(null);

		return proprietario;
	}

	public List<Quarto> getQuartos() {
		return this.quartos;
	}

	public void setQuartos(List<Quarto> quartos) {
		this.quartos = quartos;
	}

	public Quarto addQuarto(Quarto quarto) {
		getQuartos().add(quarto);
		quarto.setHotel(this);

		return quarto;
	}

	public Quarto removeQuarto(Quarto quarto) {
		getQuartos().remove(quarto);
		quarto.setHotel(null);

		return quarto;
	}

}